[c++11]auto

参考:

auto (C++)

placeholder type specifiers

关键字autoc++11新增的,其目的是用于自动类型推断。语法如下:

auto declarator initializer;

auto本身不是类型,它是一个类型占位符。它能够指导编译器根据声明变量的初始化表达式或lambda表达式参数进行类型推断

使用auto代替固定类型声明有以下优点:

  • 鲁棒性:即使表达式的类型会更改也能工作,比如函数返回不同类型
  • 高性能:能够保证不会发生类型转换
  • 易用性:不需要关心拼写困难或打字错误
  • 高效率:使得编码更有效率

以下情况可能需要使用固定类型:

  1. 只有某一类型能够起作用
  2. 表达式模板辅助类型,比如(valarray+valarray)

网上也有关于auto的讨论:如何评价 C++ 11 auto 关键字?